package com.cskaoyan.javase.oop3._2inner._3local._3notice;

/**
 * 局部内部类的注意事项:
 *      在局部内部类中
 *      如果想要访问作用域内部的局部变量
 *      那么该局部变量是一个常量:
 *          1,要么直接声明final
 *          2,要么不要修改它,将它视为常量
 *
 * 在最后，特别强调一点。
 * 后面学习的 匿名内部类 和 Lambda表达式 本质依然是局部内部类
 * 这一条注意事项仍然生效。
 *
 * @since 15:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        EnclosedClazz ec = new EnclosedClazz();
        ec.test();
    }
}

class EnclosedClazz {
    // int a = 10;

    public void test() {
        int b = 20;
        class Inner {
            // int a = 30;
            public void testInner() {
                /*System.out.println(this.a);
                System.out.println(a);
                System.out.println(b);
                System.out.println(EnclosedClazz.this.a);*/
                // Variable 'b' is accessed from within inner class, needs to be final or effectively final
                // System.out.println(b);
                // b = 100;
            }
        }
        new Inner().testInner();
    }
}